AWS Step FunctionsのエラーをAWS User Notificationsを使って簡単に通知してみた(メール・Slack)
はじめに
AWS User Notificationsで通知されるメールが見やすかったので、業務で通知させることが多いAWS Step Functionsの通知についても試してみました。
AWS AWS Step Functionsのステートマシンが失敗した時の通知を試してみますが、ステータスによって通知を分けることも可能です。 今回は通知ついでにメールとSlack通知の両方に送ってみて、情報量の差分があるかも確認してみました。
先にまとめ
- 一度作って終わりであれば、AWS User Notificationsによる設定は簡単で便利なのでおすすめ
- Slack通知は手動作成と通知内容に差がない
- 繰り返し他の環境でも実装するのであれば、AWS User NotificationsではなくEventBridgeルール等をIaCで作成した方がいい
- メール通知とSlack通知では情報量に若干差があるが、調査に大きな影響はなさそう
やってみる
以下のリソースは既に設定済みの前提で進めます。配信チャネルについてはメールとSlack2つを設定していますが、利用する方1つのみあればOKです。
- 通知ハブ
- 配信チャネル
- メール
- チャットチャンネル(Chatbot)
Chatbotの設定については以下をご覧ください。
通知設定
AWS Step Functionsの通知を送るための通知設定を作成していきます。名前と説明については任意のものを入力してください。
イベントルールの設定は以下の通りです。今回はアカウント内のステートマシン全ての失敗を通知したいので、ARN等は指定していません。
- AWS のサービスの名前
- Step Functions
- イベントタイプ
- Step Functions Execution Status Change
- 特定のステータス
- FAILED
- リージョン
- Asia Pacific (Tokyo)
集約設定は特に不要なため、「Do not aggregate」を選択します。
配信チャネルについては、今回メールとSlackの比較のため2つ設定しています。
メール通知
ステートマシンがエラーになった通知を送ってみると以下のメールが届きました。
実行したIDに加えて、リージョンや通知センターと失敗したステートマシンへのリンクまで含まれています。
通知センターのリンクからは以下の情報を参照することができました。
メール文は英語でしたが、メッセージが日本語になっていますね。
右上の「詳細を表示」からは失敗したステートマシンに遷移するようになっていました。
エラー調査を行うための通知としては十分導線が整っているように感じますね。
Slack通知
次にSlack通知を確認してみます。
こちらはタイトルが失敗したステートマシンへのリンクになっており、その他の情報はメールに比べると差があります。 具体的には、以下の項目がありませんでした。
- 通知センターへのリンク
- Datailsに含まれる情報
- Event type
- Timestamp
- Configuraration ARN
あとメールにはAccount IDとRegionもDatailsに含まれていますが、Slackではタイトルに含まれている違いもあります。
Slackは情報量は最低限しかないですが、失敗したステートマシンへすぐ遷移できるので十分エラー通知には使えそうです。 ちなみに、この通知内容は自前でEventBridgeルールとChatbotを設定した時と同じ内容でした。
そのため、AWS User Notifications経由で作成するメリットとしてはコンソールからイベントパターンを定義できることになりそうです。
あまり大きなメリットにならないサービスもありそうなので、繰り返し通知の実装するのであればAWS User Notificationsを使わずにEventBridgeルールなどを個別にIaC化した方が実装は楽になりますね。
ここはAWS User NotificationsがCLIやCFn等に対応されることを期待したいです。
まとめ
AWS Step FunctionsのエラーをAWS User Notificationsを使ってサクッと実装してみました。 失敗のステータスなどのイベントパターンの定義を、コンソールのプルダウン作成できるのは非常にいい体験でした。まだ特定のサービスだけしか対応していない部分ではありますが、さらに使いやすくなってほしいですね。
メール通知とSlack通知で、若干ですが情報に差があった点も新たな発見でした。この点はAWS Step Functionsではあまり影響はなさそうですが、通知するサービスによって差が出る可能性もあるので、一度通知を確認することをお勧めします。
欲を言えばOrganizations連携やAWS CLI、CFnでも操作できるようになってくれると嬉しいですね。今後のアップデートにも注目していきましょう。